typedef struct fila_s{
  int tempoInicio; //tempo de inicio de qualquer evento com o processo
  int tempoCpu;    //armazena o tempo que o processo esta na CPU
  int tempoEspera; //armazena o tempo que o processo esta na fila de Aptos
  int processoId;  //identificador do processo, para saber em que momento foi criado, 
				//para retornar os dados na order de criacao
  struct fila_s *next;
}fila_t;

/*Funcao para inserir item na fila*/
void filaInsereItem(fila_t **fila, fila_t *item);
void filaInsereItemOrdenado(fila_t **fila, fila_t *item);


/*Funcao para pegar o proximo item da fila, o item eh removido da fila*/
fila_t* filaPegaItem(fila_t **fila);


/*Chamada quando o evendo de execucao encerrada eh gerado,
 * encerra a execucao do processo que estiver sendo executado
 * coloca o processo na lista de processos encerrados para depois retornar os tempos de execucao em ordem
 * */
void fifoExecucaoEncerada(int tempo);

/*
 * Chamada quando o evendo de liberar a cpu eh gerado
 * Coloca o processo atual na fila de aptos e coloca o proximo processo na CPU
 */
void fifoLiberaCpu(int tempo);

/*
 * Funcao auxiliar para colocar o proximo processo na CPU
 */
void fifoExecutaProximo(int tempo);

/*
 * Adiciona processo na fila de aptos
 * Se nao tiver nenhum processo sendo executado ele eh colocado na CPU
 */
void fifoAddApto(int tempo);

/*
 * Le o script de entrada e vai chamando as funcoes fifo
 */
void fifoLendoArquivo(char *fileName);